This invention relates to fuzzy logic control.
The use of controllers for controlling various processes has become increasingly common. Such controllers may, for example, be used to control temperature and pressure so as to improve the performance of a chemical process. Controllers have been used to control welding and for controlling numerous other operations and machines.
Traditional controllers are developed based upon a mathematical model of the open-loop process to be controlled, following classical control theory techniques. Typically traditional controllers require the use of rather accurate (and therefore) expensive sensors to monitor the output of the process. This precision is required by the control algorithm that has been synthesized from a model of the process. Such a traditional controller is shown in block diagram FIG. 1A and relies upon one or more actuators to respond to the output generated by the controller in order to maintain the process operating in a satisfactory manner.
As shown by prior art block diagram FIG. 1B, fuzzy logic controllers have previously been used for the control of processes. Such fuzzy logic controllers (FLC) are knowledge based systems in which the knowledge of process operators or product engineers has been used to synthesize a closed loop controller for the process. Such FLCs are typically derived from a knowledge acquisition process, but may be automatically synthesized from a self-organizing control architecture. In either case, the result of the synthesis is a rule or knowledge base (KB) rather than an algorithm. The KB consists of a set of fuzzy rules which are used by an interpreter having a quantification (or fuzzification) stage, an inference engine (or fuzzy matcher), and a defuzzification stage.
The quantification makes the input to the controller (generated by the sensor) dimensionally compatible with the left-hand side (LHS) of the rules. The inference engine matches the LHS of all the rules with the input, determines the partial degree of matching of each relevant rule, and aggregates the weighted output of the relevant rules, generating a possibility distribution of values on the output space. The defuzzification summarizes this distribution into a point which is used by the actuator as the resulting control action.
The sensors used by an FLC may be less expensive and less precise than the sensors used by a traditional controller due to the different value granularity with which the control laws are expressed in the knowledge base of the FLC.
The use of an interpreter in an FLC generally requires a continuous evaluation of all the rules in the knowledge base every time that there is a change in the input. Such FLCs have therefore required a relatively large amount of memory and a relatively large amount of processing power in order to perform the large number of computations quickly enough to control a real-time process. Complex structures are often required.
It may be useful to briefly discuss the concept of fuzziness even though a relatively large number of papers have dealt with this concept since it was introduced in a 1965 paper by Zadeh entitled "Fuzzy Sets" appearing in Information and Control, 8:338-353.
Fuzziness is based upon a type of uncertainty and it is useful to compare it to randomness. In randomness, there is uncertainty arising from the non-deterministic membership of a point in the sample space to a well-defined region in that space. The sample space represents the set of possible values for a random variable. The well-defined region represents an event. The region's characteristic function creates a dichotomy in the universe of discourse of the possible values for the random variable. When the point falls within the boundary of the region, it fully belongs to the region. Otherwise, the point's membership in the region is zero. Probability measures the tendency or frequency with which a random variable takes values inside the region. An example would be flipping a fair coin and knowing that the probability is 50% that the outcome will be heads. Even though there is a probability associated with that event, the outcome of the event either fully belongs to the region (the region might correspond to the outcome being heads) or is completely outside such a region (when the outcome is tails).
In fuzziness, the uncertainty is derived from the partial membership of a point in the universe of discourse to an imprecisely defined region in that space. The region represents a fuzzy set. For example, if the space is all temperatures and the region is temperatures which are much greater than 32.degree., the region is a fuzzy set. The characteristic function of the fuzzy set does not create a dichotomy in the universe of discourse. It maps the universe of discourse (i.e., all temperatures in the given example) into the interval [0,1] (0 representing non-membership in the group and 1 representing membership in the group) instead of the set 0,1. The partial membership of the point does not represent any frequency. It defines the degree to which that particular value of the universe of discourse satisfies the property which characterizes the fuzzy set. Thus, the characteristic function of the set of temperatures much greater than 32.degree. would have a value of 0 when the temperature is 32.degree.. The characteristic function of that fuzzy set would have a value of 1 at some temperature such as, for example, 500.degree.. At some value in between those two extremes, such as 100.degree., the value of the characteristic function would be somewhere between 0 and 1, the value corresponding to the extent to which 100.degree. is considered much greater than 32.degree..
A fuzzy subset A of a universe of discourse U is defined by its membership or characteristic function .mu..sub.A (U). This function maps any point .mu..epsilon.U into the unit interval: EQU .mu..sub.A (U):U.fwdarw.[0,1]
Before proceeding further to discuss several basic concepts, it is noted that definitions and notations will be explained throughout, but it may be useful for readers to refer to a summary of definitions which is included near the end of the detailed description portion of this document.
A fuzzy production rule is a mapping from a fuzzy state vector into a fuzzy control action. An example of a fuzzy production rule, taken from common-sense driving knowledge is:
If the visibility is poor, and the pavement is slippery, then the car speed is (i.e., should be) very low.
The terms poor, slippery, very low are all fuzzy descriptions of the values of state variables and actions.
A fuzzy rule-set is the union of such fuzzy production rules. An example of a fuzzy rule set is a collection of rules determining the appropriate driving speed under different visibility and pavement conditions.
More formally, let us assume that we have a rule set R, which is composed of m rules r.sub.i, i.e.: ##EQU1## and that each rule r.sub.i defines a mapping between a fuzzy state vector X.sub.i and a corresponding fuzzy action Y.sub.i : EQU r.sub.i :X.sub.i .fwdarw.Y.sub.i (2)
Let us assume that the state vector is composed of n state variables: EQU X.sub.i =[X.sub.i,1, X.sub.i,2, . . . , X.sub.i,n ] (3)
Each state variable X.sub.i =X.sub.i,j, i=1, . . . , m,j=1, . . . , n takes as value a fuzzy set defined on its corresponding universe of discourse X.sub.j whose base variable is X.sub.j. The action Y.sub.i is assigned as a value a fuzzy set defined on the universe of discourse of actions Y, characterized by the base variable y.
Then each rule r.sub.i can be written as EQU r.sub.i =.mu..sub.x.sbsb.i,l (X.sub.1).times..mu..sub.x.sbsb.1,2 (X.sub.2).times. . . . .times..mu..sub.x.sbsb.i,n (X.sub.n).times..mu..sub.Y.sbsb.i (y) (4)
where the symbol x indicates the Cartesian product operation. FIG. 2 illustrates an example with two fuzzy rules (m=2), in which each state vector has two state variables (n=2) and one output. Each rule is of the type: EQU [Temperature,Pressure].fwdarw.Throttle
Among prior papers related to fuzzy logic controllers is the 1978 paper of Kickert and Mamdani entitled "Analysis of a Fuzzy Logic Controller" appearing in Fuzzy Set and Systems, 12:29-44 and the 1976 Rutherford et al. article entitled "The Implementation of Fuzzy Algorithms for Control" appearing in Proceedings of the IEEE, 64(4) :572-573.
The Kickert paper provides an analysis of an FLC with one state variable, one output, and using the Mean of Maxima (MOM) used as a defuzzification method. Under a few additional assumptions, this paper shows the equivalence of this FLC to a multi-level relay. The paper then uses this equivalence to replace the FLC with the describing function approximation of the multi-level relay. A stability analysis is then performed upon the closed-loop system. This presentation appears limited to an FLC with one state variable as the paper indicates that for higher order systems (i.e., for a state vector with more than one state variable), the concept of a describing function does not exist.
The rather short Rutherford article discusses the compilation of a knowledge base for a two-state variable FLC using a mean of maxima (MOM) technique. Both papers are based on the assumption that the universes of discourse of the state variables are discretized, i.e. quantized.
Knowledge based systems, often called expert systems, are problem solving systems whose intelligent behavior is mostly based on declarative rather than procedural knowledge. These systems derive their conclusions from explicit knowledge (i.e., knowledge basis), rather than from hard-coded algorithms.
Although the prior art fuzzy logic controller discussed above with respect to FIG. 1B is a type of knowledge based system, a knowledge based system is not necessarily a fuzzy system.
The compilation process in a knowledge based system usually refers to the process of translation of variables, predicates, and rules into a dependency graph. Such a graph can be used to keep a pointer for all rules containing the same variable and for all variables effected by the same rule, thus eliminating the need of run-time search. The graph can also maintain the current evaluation of each rule, allowing for incremental rule evaluation when new information is entered. An example of rule compilation is the RETE network discussed by Forgy in the September 1982 article entitled "RETE: A Fast Algorithm for the Many Pattern/Many Object Pattern Match Problem" appearing in Journal of Artificial Intelligence, 19(1):17-37. The RETE network was developed to improve the performance of programs discussed in Forgy et al's 1977 article entitled "OPS, A Domain-Independent Production System Language" appearing in Proceedings of the Fifth International Conference on Artificial Intelligence, pages 933-939.
Another rule compiler is described in the May 1990 article of Bonissone et al entitled "Time-Constrained Reasoning Under Uncertainty" in Journal of Real Time Systems, 2:22-45. This rule compiler is described in Bonissone et al. U.S. patent application Ser. No. 396,407 filed Aug. 19, 1990, Docket No. RD-18,497, assigned to the assignee of the present application. The translator/compiler is used to take an existing RUM knowledge base as described in Bonissone U.S. Pat. No. 4,860,213 issued on Aug. 22, 1989, based on KEE.TM., and compile it to a more efficient internal representation, replacing KEE units with specific instances of low-level data structures. The translator derives and analyzes the rule network topology, creating a directed acyclic graph which represents the rule dependencies as a compiled network. It also creates the links between the declarative part of the knowledge base (captured by the rule dependency graph) and the procedural part of the knowledge base (captured by both user/defined and system predicates).
Beyond knowledge based systems, the compilation process in programming language refers to translation of statements from a high level source language into a low level target language, such as assembly language or machine language, to allow for efficient execution. Alternately, an interpreter can be used to execute each individual statement of the high level source language without recurring to compilation (although typically the interpreter will translate the high level language to some intermediate code designed to minimize the time needed to analyze each statement in order to execute it).